The task of creating an efficient schedule for a collection of agents is known to be a very complex constraint satisfaction problem. The problem becomes even more complex when the number of agents is large, or when there are variable constraints upon the shifts such as the number of breaks within an agent's shift, the scheduling of the breaks within a shift, and the lengths of the breaks.
Traditionally, scheduling is performed manually. Because the manual preparation of schedules is very laborious, however, computerized scheduling methods have been devised to perform the task of scheduling. Although computerized scheduling is far faster than manual scheduling, it often does not produce schedules that make the most efficient use of agents. One major reason for the difficulty in producing efficient schedules is that the scheduling problem is a computational problem of type NP-complete, i.e. the only known algorithms to solve the problem require an amount of time that grows exponentially with the size of the problem. There are no known algorithms, therefore, which can perfectly solve the scheduling problem in less than exponential time. The problem of generating a good schedule, therefore, requires computational techniques for maximizing the schedulers efficiency while minimizing the amount of computational time, and inherently involves trade-offs that are peculiar to each specific application.
U.S. Pat. No. 5,195,172 issued Mar. 16, 1993 to Elad et al. discloses a method for solving a broad class of problems, which includes scheduling problems. The method makes use of techniques from operations research and artificial intelligence. Because the method is a general-purpose problem-solving algorithm, however, it does not provide techniques to address the problems specifically associated with optimizing agent schedules. In other words, while the techniques disclosed by Elad may provide a small improvement to conventional scheduling techniques, they are too general to provide a fast and effective method for efficient agent scheduling.
U.S. Pat. No. 5,369,570 issued Nov. 29, 1994 to Parad discloses adjusting a resource schedule to adapt it to changing conditions, needs, and requirements. The method is directed to the scheduling of general resources, and the concept of schedule repair is accordingly limited to a very general context. The problem of agent scheduling, on the other hand, brings with it special constraints and associated complexities. While the disclosed method may solve certain problems of a general nature related to efficient scheduling, specific problems associated with optimizing agent scheduling are not addressed.
U.S. Pat. No. 5,111,391 issued May 5, 1992 to Fields et al. discloses a skill-based staff scheduling system, which is largely concerned with agent placement within existing or fixed schedules. As a result of this lack of flexibility, it is not able to produce a well-optimized schedule which allows for the variation of other parameters.
U.S. Pat. No. 5,325,292 issued Jun. 28, 1994 to Crockett discloses a method for agent scheduling which includes a post-processing step for optimization. The post-processing step allows for changes in break times, swapping shifts for preferences, and eliminating unnecessary tours. Because it does not allow for many other possible schedule changes, however, the disclosed method is less than ideal. By unnecessarily fixing many attributes of the schedule, it can not always find a more optimal schedule. For example, the post-processing step does not allow a single agent to exchange shifts and does not allow the day that an agent works to be changed. The post-processing also does not allow more than one agent to be simultaneously rescheduled. These limitations, as well as others, contribute to the production of a less than optimal agent schedule. Moreover, the post-processing step is blindly iterated a fixed number of times. As a result, computational time is spent in an attempt to optimize the schedule regardless of whether or not the schedule is likely to benefit from another iteration.